declare i32 @getint()

declare void @putint(i32)

define i32 @main() {
label_entry:
  %op0 = alloca i32
  store i32 1, i32* %op0
  %op1 = alloca i32
  store i32 1, i32* %op1
  %op2 = alloca i32
  %op3 = call i32 @getint()
  store i32 %op3, i32* %op2
  br label %label4
label4:                                                ; preds = %label_entry, %label21
  %op5 = load i32, i32* %op0
  %op6 = icmp slt i32 %op5, 999999999
  br i1 %op6, label %label7, label %label12
label7:                                                ; preds = %label4
  %op8 = load i32, i32* %op0
  %op9 = load i32, i32* %op2
  %op10 = srem i32 %op8, %op9
  %op11 = icmp eq i32 %op10, 0
  br i1 %op11, label %label15, label %label18
label12:                                                ; preds = %label4
  %op13 = load i32, i32* %op2
  call void @putint(i32 %op13)
  %op14 = load i32, i32* %op0
  ret i32 %op14
label15:                                                ; preds = %label7
  %op16 = load i32, i32* %op0
  %op17 = add i32 %op16, 3
  store i32 %op17, i32* %op0
  store i32 411, i32* %op1
  br label %label21
label18:                                                ; preds = %label7
  %op19 = load i32, i32* %op0
  %op20 = add i32 %op19, 2
  store i32 %op20, i32* %op0
  store i32 101, i32* %op1
  br label %label21
label21:                                                ; preds = %label15, %label18
  %op22 = load i32, i32* %op0
  %op23 = load i32, i32* %op1
  %op24 = srem i32 %op23, 3
  %op25 = add i32 %op22, %op24
  store i32 %op25, i32* %op0
  br label %label4
}
